package org.finesys.common.dataPermission.annotation;

import org.finesys.common.dataPermission.rule.DataPermissionRule;

import java.lang.annotation.*;

/**
 * 对类和方法进行数据权限校验
 */
@Target({ElementType.TYPE, ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface DataPermission {
    /**
     * 默认开启数据权限，即使不添加注解，默认开启状态，可通过设置enable为false禁用
     */
    boolean enable() default true;

    /**
     * 生效的数据权限规则数组 优先级高于{@linked #excluedeRules()}
     */
    Class<? extends DataPermissionRule>[] includeRules() default {};

    /**
     * 排除的数据权限规则数组 优先级低与 {@linked #includeRules()}
     */
    Class<? extends DataPermissionRule>[] excludeRules() default {};

}
